package com.zy.simplefactory1;

import com.zy.bean.CCourse;
import com.zy.bean.ICourse;
import com.zy.bean.JavaCourse;
import com.zy.bean.PythonCourse;

/**
 * @program: shopping153_cloud
 * @description: 简单工厂, 生成各种课程
 * @author: zy
 * @create: 2025-08-27 15:40
 */
public class CourseFactory {

    //对扩展开放, 对修改关闭：   开闭原则

    // 简单工厂模式的简单实
    public ICourse createCourse(String name){
        if ("java".equals(name)){
            return new JavaCourse();
        }else if ("python".equals(name)) {
            return new PythonCourse();
        }else if ("c".equals(name)) {
            return new CCourse();
        }else {
            return null;
        }
    }

    // 简单工厂模式的复杂实现
    public ICourse createCourse2(String className){
        try {
            //利用反射机制来创建 对象
            return (ICourse) Class.forName(className).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public ICourse createCourse3(Class<? extends ICourse> cls){
        try {
            //利用反射机制来创建 对象
            return  cls.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }



}
